// pages/views/cheat/cheat.js
const app = getApp()
Page({
  /**
   * 页面的初始数据
   */
  data: {
    doctor:{}, //要区分用户和医生
    user:{}, //要区分用户和医生
    current_me:JSON.parse(wx.getStorageSync('userInfo')),//当前发消息的人
    showData:{} ,//如果登录的账号是用户，则聊天框显示医生，反之则反
    textStyle:[],//这是一个聊天框的style数组，决定它是向左还是向右对齐
    cheatRecord:[],//聊天记录
    clearInput:'',//清空input
    orderList:[],//全部订单
    current_order:{},//当前订单信息
    formList:['药方','其它说明'],
    showFinish:false,
  },
  submit(e){
    let formData = e.detail.value
    formData.id = this.data.current_order.id
    formData.status = '订单完成'
    console.log(formData);
    app.toast('提交中..','loading',1500)
    setTimeout(() => {
      this.updateOrderAPI(formData)
    }, 1700);
  },
  updateOrderAPI(formData){
    app.postData('/orders/update',formData)
    .then(res=>{
      if (res.code == 200) {
        app.toast('订单已完成','check',2000)
        this.setData({
          isShow:false,
          showFinish:false,
        })
        setTimeout(() => {
          this.saveRecordAPI() //保存聊天记录
          wx.removeStorageSync('record')
          wx.switchTab({
            url: '../../order/order',
          })
        }, 2100);
      }
    }).catch(err=>{
      console.log(err);
    })
  },
  cancel(){
    this.setData({
      isShow:false
    })
  },
  finishOrder(){
    app.toast('加载中..','loading',600) 
    setTimeout(() => {
      this.showForm()
    }, 600); 
  },
  showForm(){
   this.setData({
      isShow:true
   })
  },
  // 向对方发送消息
  formSubmit(e){
    let text = e.detail.value.input
    // 01.拿到之前的聊天记录
    let cheatRecord = this.data.cheatRecord
    // 02.给聊天记录数组push新的记录进去   
    cheatRecord.push({
      username:this.data.current_me.username,
      text, 
      isImage:false,
      style:'margin-left:auto;background-color: rgba(152, 251, 152, 0.4);',
    })
    // 03.给它重新用JSON封印
    wx.setStorageSync('record', cheatRecord)
    //04. 给当前聊天页面也push新的记录
    this.setData({
      cheatRecord,
      clearInput:''
    })
  },
  // 解构历史聊天记录
  remake_record(){
     let cheatRecord = JSON.parse( this.data.current_order.weCheat)
      wx.setStorageSync('record',cheatRecord)
      console.log('走数据库：',cheatRecord.length); 
      cheatRecord.forEach((item)=>{  
        if (item.username != this.data.current_me.username) {
          item.style = 'him'
        }else{
          if (item.isImage == true) {
            item.style = 'text-align:right;'
          }else{
            item.style = 'margin-left:auto;background-color: rgba(152, 251, 152, 0.4);'
          }
        }
      })
    
    this.setData({
      cheatRecord,
      clearInput:''
    })
      // console.log(this.data.cheatRecord);
    
  },
  // 保存聊天记录
  saveRecordAPI(){
     app.toast('数据保存中..','none',700)
     app.postData('/orders/update',{
      id:this.data.current_order.id,
      weCheat:JSON.stringify(wx.getStorageSync('record'))
    }).then(res=>{
      console.log(res);
      // 返回
      setTimeout(() => {
        wx.navigateBack({
          data:1,
        })
      }, 1000);
    })
  },
  back(){
    this.saveRecordAPI()
  },
  // 拿到医生的信息
  getDoctorData(username){
    app.postData('/users',{username})
    .then(res=>{
      this.setData({
        doctor:res.data,
        showData:res.data
      })
    })
  },
  // 发送文件
  sendPicture(){
  wx.chooseMedia({
    count: 1, //默认9
    sizeType: ['original'], //可以指定是原图还是压缩图'compressed'，默认二者都有
    sourceType: ['album'], //从相册选择 - album 从相册选图，camera 使用相机，默认二者都有。如需直接开相机或直接选相册，请只使用一个选项
    crop:{
      quality:100,//取值范围为1-100，数值越小，质量越低（仅对jpg格式有效）。默认值为80
      width:80,//裁剪的宽度，单位为px，用于计算裁剪宽高比。
      height:80,//裁剪的宽度，单位为px，用于计算裁剪宽高比。
      resize:false //是否将width和height作为裁剪保存图片真实的像素值。默认值为true。注：设置为false时在裁剪编辑界面显示图片的像素值，设置为true时不显示
    },
  success:  (res)=> {  //成功后的图片blob参数
    let src = res.tempFiles[0].tempFilePath
    console.log(res.tempFiles[0]);
        // 01.拿到之前的聊天记录
        let cheatRecord = this.data.cheatRecord
        // 02.给聊天记录数组push新的记录进去   
        cheatRecord.push({
          username:this.data.current_me.username,
          src, 
          isImage:true,
          style:'text-align: right;',
        })
        // 03.给它重新用JSON封印
        wx.setStorageSync('record', cheatRecord)
        //04. 给当前聊天页面也push新的记录
        this.setData({
          cheatRecord,
          clearInput:''
        })
    },
  })

  },
  // 预览头像
  preView(e){
    console.log(e); 
    let url = e.currentTarget.dataset.url
		wx.previewImage({
			urls: [url],//数组类型
			longPressActions: {
				itemList: ['发送给朋友', '保存图片', '收藏'],
				success: function(data) {
					console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
				},
				fail: function(err) {
					console.log(err.errMsg);
				}
			}
		});
  },
  // 拿到用户的信息
  getUserData(username){
    app.postData('/users',{username})
    .then(res=>{
      this.setData({
        user:res.data,
        showData:res.data
      })
    })
  },
  // 找出订单里的哪个用户和哪个医生之间的对话
  findOrder(){
    let current_order = {}
    if (this.data.current_me.type == '医生') { //如果当前账号是医生，我就要找到是否有我未完成的订单 
      this.data.orderList.forEach((item)=>{
        if (item.doctor == this.data.current_me.username && item.status == '正在咨询') { 

          current_order = item
          return;
          console.log('医生的订单：',item);
        }
      })
    }else{ //反之你是用户也一样
      this.data.orderList.forEach((item)=>{
        if (item.username == this.data.current_me.username && item.status == '正在咨询') {
          current_order = item
          return;
          console.log('用户的订单：',item);
        }
      })
    }
    // 最后更新
    if (current_order.id != undefined) {
      // 把数据更新 
      this.setData({ 
        current_order
      }) 
      this.remake_record() //最后一步解析聊天记录-
    }else{
      app.toast('没有您的订单','error',1800)  
      setTimeout(() => {
        wx.navigateBack({
          data:1,
        })
      }, 2000);
    } 
  },
 getOrderData(){
    app.getData('/orders').then(res=>{
      let orderList = res.data
      console.log('所有订单信息',orderList);
      this.setData({
        orderList 
      })
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 第一步，先拿到全部订单信息
    this.getOrderData()
    setTimeout(() => { //让代码异步，否则拿不到数据 
      //第二步 把当前账号的信息设置一下
      this.setData({
        current_me:JSON.parse(wx.getStorageSync('userInfo')),
      })
      // console.log('判断我是水：',this.data.current_me.type);
      //第三步 判断你是谁 
      if (this.data.current_me.type == '医生') {
        this.setData({
          doctor:this.data.current_me,
          showFinish:true
        })
      }else{
        this.setData({
          user:this.data.current_me
        })
      }
      // 第四步  寻找自己是否有未完成的订单，如果没有则禁止访问了
      this.findOrder()
      //第五步  如果还有未完成的订单，则把你聊天对象的数据获取
      // console.log(this.data.current_order);
      if (this.data.current_me.type == '医生') {
          this.getUserData(this.data.current_order.username)
      }else{
          // console.log(this.data.current_order.doctor);
          this.getDoctorData(this.data.current_order.doctor)
      } 
    }, 1000); 
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },
  
  /**
   * 生命周期函数--监听页面显示
   */
  
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
 
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})